#define _CRT_SECURE_NO_WARNINGS
//
//#include <stdlib.h>
//#include <stdio.h>
//#include <string.h>
//
//int compare1(const void* p1, const void* p2)
//{
//	return (*(int*)p1 - *(int*)p2);
//}
//
//int compare2(const void* p1, const void* p2)
//{
//	char* str1 = *(char**)p1;
//	char* str2 = *(char**)p2;
//
//	return strcmp(str1, str2);
//}
//
//void print1(int* arr, int num)
//{
//	int i = 0;
//	for (i = 0; i < num; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//}
//
//void print2(char** arr, int num)
//{
//	int i = 0;
//	for (i = 0; i < num; i++)
//	{
//		printf("%s ", arr[i]);
//	}
//}
//
//int main()
//{
//	//int arr[10] = { 0,3,4,2,7,6,9,1,8,5 };
//	char* arr[3] = { "zhangsan","lisi","wangwu" };
//	int num = sizeof(arr) / sizeof(arr[0]);
//	int sz = sizeof(arr[0]);
//	qsort(arr, num, sz, compare2);
//	//print1(arr, num);
//	print2(arr, num);
//
//	return 0;
//}
//
//#include <stdio.h>
//#include <string.h>
//
//int main()
//{
//	char str1[] = { "bbcde" };
//	char str2[] = { "abcde" };
//	printf("%d", strcmp(str1, str2));
//
//	return 0;
//}

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct
{
	char name[20];
	int age;
	int class;
}stu;

int compareAge(const void* p1, const void* p2)
{
	//return ((stu*)p1)->age - ((stu*)p2)->age;
	return (*(stu*)p1).age - (*(stu*)p2).age;
}

int compareName(const void* p1, const void* p2)
{

	//return (strcmp(((stu*)p1)->name, ((stu*)p2)->name));
	return (strcmp((*(stu*)p1).name, (*(stu*)p2).name));
}

int main()
{
	stu arr[4] = { {"li", 18, 1},{"zhang", 19, 3},{"wang", 17, 4},{"zhao", 16, 2} };
	int num = sizeof(arr) / sizeof(arr[0]);
	int sz = sizeof(arr[0]);

	//qsort(arr, num, sz, compareAge);
	qsort(arr, num, sz, compareName);

	return 0;
}